package com.baosight.risk.mapper.xtaa.code;

import com.baosight.risk.base.entity.MultipleUpdateStatus;
import com.baosight.risk.base.mapper.BaseMapper;
import com.baosight.risk.service.xtaa.code.entity.XtaaCode;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author CuiShiHao
 * @description 描述
 * @date 2019/4/22
 */
public interface XtaaCodeMapper extends BaseMapper<XtaaCode> {

    /**
     * 根据字典类型获取字典详细数据 仅启用数据
     *
     * @param ddTypeCode 字典类型
     * @return
     */
    List<XtaaCode> selectDataByDDTypeCode(String ddTypeCode);


    /**
     * 根据字典类型获取字典详细数据 全部数据
     *
     * @param ddTypeCode 字典类型
     * @return
     */
    List<XtaaCode> selectAllDataByDDTypeCode(String ddTypeCode);


    /**
     * 根据字典类型,父节点ID查询子集数据
     *
     * @param ddTypeCode 字典类型
     * @param parentID   父节点ID
     * @return List<XtaaCode> 字典详细数据
     */
    List<XtaaCode> selectLazyDataByDDTypeCodeAndParentID(@Param(value = "ddTypeCode") String ddTypeCode, @Param(value = "parentID") String parentID);


    List<XtaaCode> selectLazyRiskDataByDDTypeCodeAndParentID(@Param(value = "ddTypeCode") String ddTypeCode, @Param(value = "parentID") String parentID);
    /**
     * 根据字典类型获取字典详细数据,根据字典名称模糊查询
     *
     * @param ddTypeCode 字典类型
     * @param ddName     名称 模糊查询
     * @return
     */
    List<XtaaCode> selectDataByDDTypeCodeAndDDName(@Param(value = "ddTypeCode") String ddTypeCode, @Param(value = "ddName") String ddName);

    /**
     * 根据父节点id获取下级数据（仅子集）
     *
     * @param id 父节点id
     * @return
     */
    List<XtaaCode> selectSubsetByParentID(String id);

    /**
     * 根据父节点id获取下级数据（包含子集孙集）
     *
     * @param id 父节点id
     * @return
     */
    List<XtaaCode> selectAllSubsetByParentID(String id);

    /**
     * 根据编码名称获取下级数据（包含子集孙集）
     *
     * @param ddCode 编码名称
     * @return
     */
    List<XtaaCode> selectAllSubsetByDDCode(String ddCode);

    /**
     * 根据ID集合批量更新状态
     *
     * @param updateStatus
     * @return
     */
    Integer multipleUpdateStatus(@Param(value = "params") MultipleUpdateStatus updateStatus);

    Integer deleteByIds(@Param(value = "params") Map<String, Object> map);

    /**
     * 根据字典名称和末级获取字典信息
     *
     * @param DDName     指标名称
     * @param isEndLevel 是否为末节点
     * @return
     */
    XtaaCode selectXtaaCodeByDDCodeAndEndLevel(@Param(value = "DDCode") String DDCode);

    /**
     * 根据父节点ID获取字典信息
     *
     * @param ParentGuid 父节点ID
     * @return
     */
    XtaaCode selectXtaaCodeByParentGuid(@Param(value = "ParentGuid") String ParentGuid);

    List<XtaaCode> listByParentCodeAndDDType(@Param("ddType") String ddType, @Param("parentCode") String parentCode);
}